/* 
    async/await 是 ES8（ECMAScript 2017）引入的新语法，用来简化 Promise 异步操作。在 async/await 出
    现之前，开发者只能通过链式 .then() 的方式处理 Promise 异步操作

    .then 链式调用的优点：解决了回调地狱的问题
    .then 链式调用的缺点：代码冗余、阅读性差、不易理解
*/

import thenFs from 'then-fs'

// 使用 async/await 简化 Promise 异步操作的示例代码如下
// 按照顺序读取文件 1.txt,2.txt,3.txt 的内容
// async function getAllFile(){
//     const r1=await thenFs.readFile('./files/1.txt','utf8')
//     console.log(r1)
//     const r2=await thenFs.readFile('./files/2.txt','utf8')
//     console.log(r2)
//     const r3=await thenFs.readFile('./files/3.txt','utf8')
//     console.log(r3)
// }

// getAllFile()


/* 
    async/await 的使用注意事项
    1.如果在 function 中使用了 await，则 function 必须被 async 修饰
    2.在 async 方法中，第一个 await 之前的代码会同步执行，await 之后的代码会异步执行
*/
console.log('A')
async function getAllFile(){
    console.log('B')  //这行代码同步执行
    //下面的代码异步执行
    const r1=await thenFs.readFile('./files/1.txt','utf8')
    const r2=await thenFs.readFile('./files/2.txt','utf8')
    const r3=await thenFs.readFile('./files/3.txt','utf8')
    console.log(r1,r2,r3)
    console.log('D')
}

getAllFile()
console.log('C')
